﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
typedef int LTDataType;
typedef struct ListNode 
{
	LTDataType data;
	struct ListNode* next;
	struct ListNode* prev;
}LTNode;

//打印
void LTPrint(LTNode* phead);

//创建
LTNode* LTBuyNode(LTDataType x);

//初始化
LTNode* LTInit(); //（推荐）
//void LTInit(LTNode** pphead);

//销毁
//传二级：违背了接口一致性
//void LTDesTroy(LTNode** pphead);
//传一级：调用完成之后将实参手动置为NULL（推荐）
void LTDesTroy(LTNode* phead);

//尾插
void LTPushBack(LTNode* phead, LTDataType x);

//头插
void LTPushFront(LTNode* phead, LTDataType x);

bool LTEmpty(LTNode* phead);
//尾删
void LTPopBack(LTNode* phead);

//头删
void LTPopFront(LTNode* phead);

LTNode* LTFind(LTNode* phead, LTDataType x);
//在pos位置之后插⼊数据
void LTInsertAfter(LTNode* pos, LTDataType x);

//在pos位置之前插⼊数据
void LTInsert(LTNode* pos, LTDataType x);

//删除pos位置的结点
void LTErase(LTNode* pos);